Jochen Zeirzer

Coin

In gleichem Maße, wie der Mensch seine Umwelt und Arbeitsabläufe durch Maschinen automatisiert, tun diese das auch mit dem Menschen selbst. Ausgangspunkt der Arbeit Coin ist die Fehlfunktion einer Maschine. In der durch diesen Fehler provozierten monotonen Endlosschleife gefangen, wird der Mensch entweder selbst zu einer „stupiden Maschine“ oder er resigniert und entflieht so der Situation. Die Maschine Coin resigniert nicht. Immer und immer wieder wirft sie eine Münze in einen Münzschlitz. Immer und immer wieder fällt diese durch. Bis zur Fehlfunktion auch dieser Maschine.



Coin01.jpg

Coin02.jpg

Fotografie: Image Recorder


Technische Beschreibung
 

Münze, Münzeinwurf, Aluminiumblech, Stahlblech, Firgelli Linear Aktuator, Servomotor, Hubmagnete, Arduino Uno, Elektronikbauteile
 

Coin03.jpg

Coin04.jpg

Arduino - Code

/* Created by Jochen Zeirzer http://www.jochen_zeirzer.public2.linz.at/ project: coin year: 2013
The Morse Code part in this sketch is based on a project by Geoff Parsons alias skhisma https://github.com/skhisma/arduino-morse-code/blob/master/arduino-morse-code.pde */
#include <VarSpeedServo.h>
VarSpeedServo ServoLift; // Servo to Lift the Coin VarSpeedServo ServoLin; // Firgelli L12P Linear actuator
int TransMag1 = 10; // Transistor to switch Magnet 1 = Magnet pull on digital PIN 10 int TransMag2 = 11; // Transistor to switch Magnet 2 = Magnet push on digital PIN 11 int IRsend = 12; // IR-LED to detect coin on digital PIN 12 int IRreceive = A0; // IR-Transitor to detect coin on analog PIN 0 const int threshold = 50; // Threshold level analog input (IR light barrier)
int beep = 13; // Piezo Speaker on digital PIN 13 int length = 50; // Morse Code Unit length in milliseconds
char* lookup[] = { // International Morse Code Characters (ITU) ".-", //a "-...", //b "-.-.", //c "-..", //d ".", //e "..-.", //f "--.", //g "....", //h "..", //i ".---", //j "-.-", //k ".-..", //l "--", //m "-.", //n "---", //o ".--.", //p "--.-", //q ".-.", //r "...", //s "-", //t "..-", //u "...-", //v ".--", //w "-..-", //x "-.--", //y "--..", //z };
void setup() {
Serial.begin(9600);
// 1kHz PWM on pin3 for Linar Actuator Firgelli L12P // configure hardware timer2 to generate a fast PWM on OCR2B (Arduino digital pin 3) // set pin high on overflow, clear on compare match with OCR2B TCCR2A = 0x23; TCCR2B = 0x0C; // select timer2 clock as 16 MHz I/O clock / 64 = 250 kHz OCR2A = 249; // top/overflow value is 249 => produces a 1000 Hz PWM pinMode(3, OUTPUT); // enable the PWM output (you now have a PWM signal on digital pin 3) OCR2B = 125; // set the PWM to 50% duty cycle
// Transistors pinMode(TransMag1, OUTPUT); pinMode(TransMag2, OUTPUT);
// IR - light barrier pinMode(IRsend, OUTPUT); pinMode(IRreceive, INPUT);
// Piezo Speaker pinMode(beep, OUTPUT);
// Servos ServoLift.attach(6); // Servo to Lift the coin on digital pwm pin 6 ServoLift.write(44); ServoLin.attach(3); // Linear actuator on modified digital pwm pin 3 ServoLin.writeMicroseconds(2000); delay(3000); ServoLift.slowmove(124, 20); delay(2000); ServoLin.writeMicroseconds(1800); delay(500); }
// Morse Code void dash() { digitalWrite(beep, HIGH); delay(length*3); digitalWrite(beep, LOW); }
void dot() { digitalWrite(beep, HIGH); delay(length); digitalWrite(beep, LOW); }
void intra_char_gap() { delay(length); }
void char_gap() { delay(length*3); }
void word_gap() { delay(length); }
void blink_char(char c) { if(c == '-') dash(); else dot(); intra_char_gap(); }
void blink(char str[]) { int c; int ic; for(c=0; c<strlen(str); c++) { if(str[c] == ' ') word_gap(); else { int idx = (int)toupper(str[c]) - 65; char* chr = lookup[idx]; for(ic=0; ic<strlen(chr); ic++) { blink_char(chr[ic]); } char_gap(); } } }
void loop() {
delay(2000); digitalWrite(IRsend, HIGH); // read the value of the Infrared LED: int analogValue = analogRead(IRreceive); Serial.println(analogRead(IRreceive));
// if the analog value is below treshold, coin is in slot - start sequence: if (analogValue < threshold) { digitalWrite(IRsend, LOW); ServoLin.writeMicroseconds(1900); delay(1000); ServoLin.writeMicroseconds(1020); ServoLift.slowmove(46, 20); delay(2000); digitalWrite(11, HIGH); // set the Transistor for Magnet2 on delay(80); digitalWrite(10, HIGH); // set the Transistor for Magnet1 on delay(200); ServoLift.slowmove(54, 10); delay(300); ServoLin.writeMicroseconds(1900); delay(1000); ServoLift.slowmove(124, 20); delay(1000); ServoLin.writeMicroseconds(1700); delay(620); digitalWrite(11, LOW); // set the Transistor for Magnet2 off digitalWrite(10, LOW); // set the Transistor for Magnet1 off }
// if the analog value is above treshold, coin is missing - morse "help please" else { blink("help please"); }
}

 

Die Maschine Coin ist Teil meiner Diplomarbeit TRIVIAL MOTION an der Universität für künstlerische und industrielle Gestaltung Linz im Bereich Bildende Kunst / Experimentelle Gestaltung.

Trivial Motion - Leseprobe.pdf (84 kB)
       Eine vollständige Ausgabe von TRIVIAL MOTION als Pdf sende ich auf Anfrage gerne zu.